{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 用于语音信号压缩的离散变换"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "此示例演示了如何使用离散余弦变换(DCT)压缩语音信号。\n",
    "加载一个包含“强”这个词的文件，这个词是由一个女人和一个男人说的。信号在8 kHz处采样。\n",
    "利用离散余弦变换对女性语音信号进行压缩。将信号分解为DCT基向量。\n",
    "分解中的术语和信号中的样本一样多。矢量展开系数X测量每个组件中存储了多少能量。将系数从最大到最小排序。\n",
    "并且找出多少DCT系数代表99.9%的能量在信号中。将数字表示为总数的百分比。\n",
    "分解中的术语和信号中的样本一样多。矢量展开系数X测量每个组件中存储了多少能量。将系数从最大到最小排序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.io import loadmat\n",
    "from scipy.fft import dct,idct\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "m=loadmat(\"strong.mat\")\n",
    "x=m['her']\n",
    "x=x.reshape(-1,1)\n",
    "X=dct(x,norm='ortho')\n",
    "X=X.reshape(len(X))\n",
    "XA=abs(X)\n",
    "XX=sorted(XA,reverse=True)\n",
    "ind=sorted(range(len(X)), key=lambda k: XA[k])\n",
    "need=1\n",
    "while np.linalg.norm(X[ind[1:need+1]])/np.linalg.norm(X)<0.999:\n",
    "  need = need+1\n",
    "xpc = need/len(X)*100\n",
    "X[ind[need+1:]]=0\n",
    "xx=idct(X)\n",
    "plt.plot(x)\n",
    "plt.plot(xx)\n",
    "plt.plot(x-xx)\n",
    "plt.legend([\"Original\",\"45% of coeffs\",\"Differences\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "重复分析男性的声音。找出多少DCT系数代表99.9%的能量，并表示数字为一个百分比的全部。\n",
    "将其余的系数设置为零，并从压缩版本重构信号。绘制原始信号，其重构，以及两者之间的区别。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABdh0lEQVR4nO2dd3xUVfbAv3d6KgkQQu8dpAhYwYaAiiKoYC+rK7rqrv239rru2teyggUVUBcBQWyoqEgVpYsCKmUDhBICISFtMu3+/pjJ1Pcmk8mEtPv9fDTv3T6P986779xzzxFSShQKhULR+DHU9QAUCoVCcWxQAl+hUCiaCErgKxQKRRNBCXyFQqFoIiiBr1AoFE0EU10PIBotW7aUnTt3ruthKBQKRYNh3bp1h6SUWVp59Vrgd+7cmbVr19b1MBQKhaLBIITYpZenVDoKhULRRFACX6FQKJoISuArFApFE6Fe6/AVCkXd4nQ6yc3NxW631/VQFGHYbDbat2+P2WyOuU5CBL4Q4hzgZcAITJNSPq1R5gzgJcAMHJJSnp6IvhUKRe2Rm5tLWloanTt3RghR18NR+JBScvjwYXJzc+nSpUvM9Wqs0hFCGIHXgHOBvsDlQoi+YWUygCnAOCllP2BiTftVKBS1j91up0WLFkrY1zOEELRo0aLaX16J0OGfAGyXUu6UUjqAD4ELw8pcAcyXUu4GkFIeTEC/CoXiGKCEff0knn+XRAj8dsCeoPNcX1owPYFMIcQSIcQ6IcQ1eo0JISYLIdYKIdbm5+cnYHiKeseRXbD927oehULR5EiEwNd6zYQ72TcBQ4CxwBjgYSFET63GpJRvSimHSimHZmVpbhZTNHBWP3IR//3HlLoehqIBkZuby4UXXkiPHj3o1q0bt99+Ow6HI6Lcvn37uOSSS6ps77zzzqOwsDCusTz22GM8//zzcdWtaxIh8HOBDkHn7YF9GmW+klKWSikPAcuAgQnoW9EA+cwykF3Z6mWuiA0pJRdddBHjx49n27Zt/PHHH5SUlPDggw+GlHO5XLRt25aPPvqoyjYXLlxIRkZGLY24/pIIgb8G6CGE6CKEsACXAZ+GlfkEGCGEMAkhkoETga0J6FvRAOl06GTSiy6t62EoGgiLFy/GZrPxpz/9CQCj0ci///1v3nnnHaZMmcLEiRO54IILGD16NDk5OfTv3x+AsrIyJk2axIABA7j00ks58cQT/a5aOnfuzKFDh8jJyaFPnz7ceOON9OvXj9GjR1NeXg7AW2+9xbBhwxg4cCAXX3wxZWVldXMBEkiNzTKllC4hxG3A13jNMt+RUm4WQtzsy39dSrlVCPEVsAnw4DXd/LWmfSsaJhVJ3ep6CIo4ePyzzWzZdzShbfZtm86jF/SLWmbz5s0MGTIkJC09PZ2OHTvicrlYtWoVmzZtonnz5uTk5PjLTJkyhczMTDZt2sSvv/7KoEGDNNvftm0bs2bN4q233mLSpEnMmzePq666iosuuogbb7wRgIceeoi3336bv/71rzX6vXVNQuzwpZQLgYVhaa+HnT8HPJeI/hQNg/xnTyap3yhSxz5R10NRNGCklJoWKZXpo0aNonnz5hH5K1as4Pbbbwegf//+DBgwQLP9Ll26+F8GQ4YM8b80fv31Vx566CEKCwspKSlhzJgxiflBdYjaaauoNd49eBZJOw/z17F1PRJFIqhqJl5b9OvXj3nz5oWkHT16lD179mA0GklJSdGsJ2W47Yg2VqvVf2w0Gv0qneuuu44FCxYwcOBApk+fzpIlS+L7AfUI5UtHUWukHi3DmeSp62EoGjgjR46krKyMmTNnAuB2u7n77ru57rrrSE5O1q03fPhw5syZA8CWLVv45ZdfqtVvcXExbdq0wel08sEHH8T/A+oRSuArag1puABrudpUragZQgg+/vhj5s6dS48ePejZsyc2m41//vOfUevdcsst5OfnM2DAAJ555hkGDBhAs2bNYu73ySef5MQTT2TUqFH07t27pj+jXiBi/eypC4YOHSpVAJSGy2s3Lwbg1tfPiildUf/YunUrffr0qethxIXb7cbpdGKz2dixYwcjR47kjz/+wGKx1PXQEobWv48QYp2UcqhWeaXDVygUjZKysjLOPPNMnE4nUkqmTp3aqIR9PCiBr6gzPG43BqOxroehaKSkpaWpEKlhKB2+os74Ys6Cuh6CQtGkUAJfUWfc+Pj1kYkl+eBxH/vBKBRNACXwFXXGhUNCwiYgSw/z031nkP/hrXU0IoWicaMEvqLOEMktQs4/n/4CS9MH8uaK8uo3Zi+i4qNboKI4QaNTKBofSuAr6gxTmEXwmh0HSDl8PenEbitdyU8vX89b37Rj3dSbEjQ6RX2hc+fOHHfccQwaNIihQwPWhpdeeimDBg1i0KBBdO7c2e8eYeXKlQwYMIBhw4axfft2AAoLCxkzZkzMu28rWb58Of369WPQoEH+HbiJpKKigrPPPptBgwYxe/bsWu9PWeko6gyLJ3SXZIrJCsKArfzUarf1zoZi+jc/wHNL/uDDO8Iy87aAwQhZveIfrKJO+f7772nZsmVI2uzZs/3Hd999t39T1QsvvMC8efPIyclh6tSpvPDCCzz55JM88MAD1Y4S9cEHH3DPPff4PXUmmg0bNuB0Otm4cSMAN998c632p2b4ijrDYEmcSebA9P4YPBMY0XpERN6SR29g6SPXJqwvRf1CSsmcOXO4/PLLATCbzZSXl1NWVobZbGbHjh3s3buX008/XbeN7777jsGDB3Pcccdx/fXXU1FRwbRp05gzZw5PPPEEV155ZUSdmTNnMmDAAAYOHMjVV18NwK5duxg5ciQDBgxg5MiR7N69G4D8/Hwuvvhihg0bxrBhw1i5ciUHDx7kqquuYuPGjQwaNIg33ngjpL/9+/dz2mmnMWjQIPr378/y5ctrfK3UDF9RZyQJV1hK/Lu+jS4bLguYHLaIvCXJvZFCEPG4O+04v7gP8+hHIDnS26IijC/vgwPV80dTJa2Pg3OfjlpECMHo0aMRQnDTTTcxefLkkPzly5eTnZ1Njx49ALj//vuZPHkySUlJvPfee9xzzz08+eSTuu3b7Xauu+46vvvuO3r27Mk111zD1KlTueOOO1ixYgXnn39+RBStzZs389RTT7Fy5UpatmxJQUEBALfddhvXXHMN1157Le+88w5/+9vfWLBgAbfffjt33nknw4cPZ/fu3YwZM4atW7cybdo0nn/+eT7//HMAVq1a5e/vhRdeYMyYMTz44IO43e6E+ONXAl9RZwjAnbseY/vj42/EVcHhl84Ghge16sNZDo4yssquxuCODIe39cP7+X55JoM3XsnJj30Z/xgUtcrKlStp27YtBw8e9Pu1Oe200/z5s2bN8s/uAQYNGsSPP/4IwLJly2jbti1SSi699FLMZjMvvPAC2dnZ/vK///47Xbp0oWdPb9TVa6+9ltdee4077rhDd0yLFy/mkksu8auZKt0zr1q1ivnz5wNw9dVX83//938AfPvtt2zZssVf/+jRoxQXRzcwGDZsGNdffz1Op5Px48fr+vOvDkrgK+oMe6qZ2c8/wxUvza66sA7/+2kBn+4bi00U+lICAj/n2TM4erAQmIrHGLml/syn3uGBs69hzj4rJ8fYnyz4H7v/dQYd71iAaDc47nE3SKqYidcWbdu2BaBVq1ZMmDCB1atX+wW+y+Vi/vz5rFu3LqKelJJ//OMfzJ49m9tuu43HH3+cnJwcXnnlFZ566qmQctVFz0d/OJVlPB4Pq1atIikpKeY+TjvtNJYtW8YXX3zB1Vdfzb333ss111xT7bEGo3T4ijqjU/Gf2W3NiKns4ZnXkXNPp4j0k2+YjKU4H4PbuwAsZOAhnHakEwss+kL5/rOvxuiaQG93jJ4Qc9fy1fO38r7tT3zyzN9jq6OoEaWlpf6ZcGlpKYsWLfKHMATvzLl37960b98+ou6MGTMYO3YsmZmZlJWVYTAYMBgMEaqR3r17k5OT47foee+996Lq+8HrsnnOnDkcPnwYwK/SOeWUU/jwww8B74Lv8OHeL8/Ro0fzn//8x1+/cpE2Grt27aJVq1bceOON3HDDDaxfv77KOlWhZviKOiXlqLXqQsC7a9Kg2QTuCUu/c9wVeI6OxeFf/w0I/I6HewKDcOp0YXKaQYDRlVpl/7L8KJ89djdr0rvSsQB+ze7M+JhGrqgJeXl5TJgwAfDO5q+44grOOeccf/6HH34Yos6ppKysjBkzZrBo0SIA7rrrLi6++GIsFguzZs0KKWuz2Xj33XeZOHEiLpeLYcOGcfPNN0cdV79+/XjwwQc5/fTTMRqNDB48mOnTp/PKK69w/fXX89xzz5GVlcW7774LwCuvvMKtt97KgAEDcLlcnHbaabz++utR+1iyZAnPPfccZrOZ1NRUfzyAmqAEvqJ+UpwHaQE9q0VKknNbRBQzeMI/qwPnTmvi3C/Pffc/bEruQNuSTBy208jOW5qwthX6dO3alZ9//lk3f/r06ZrpycnJfP/99/7zESNGRA2AMnLkSDZs2BBz++DV9V97baj1V+fOnVm8eHFE2ZYtW4aYkVZyxhlncMYZZ2j2p9V+TVEqHUW9QQSpUjc9Giqsja6LqLBF2ufL2rqDD20LsUj5Zds22jiuR8hRvhT16CgaHuquVdQtIvJEYuTNI13qZDhUFMPhHax45Eq+fewv/uRk36Kvx1ipH6reBh6Foj6gVDqK+oNPhjqtzRlcdm6MlRIbM3fHs6M4sL+cr5OGYMTI2b50qeS7ohGQkBm+EOIcIcTvQojtQoj7opQbJoRwCyEu0SujUADYk49dWL1go7wbVxXwsasz7YomkFUavBgY/mKpv6FBFQo9ajzDF0IYgdeAUUAusEYI8amUcotGuWeAr2vap6IRUc/k5uWtLsdhOB132FTIEzE1UlN+RcMjETP8E4DtUsqdUkoH8CFwoUa5vwLzgIMJ6FPRCIlj/0vCcdi07a+lWu5SNAIScRe3A/YEnef60vwIIdoBE4DohqcKxbHit4XVKm5QKp06w2g0MmjQIPr168fAgQN58cUX8Xi8/x5r167lb3/7G3DsXQ03RBKxaKv1bRv+NLwE/F1K6a5qO7IQYjIwGaBjx44JGJ6iwRCPliQOueu2F/P+P2dAUtuY64iIfgKDzfv3WTgL9tP+ya3VH4zLAaZItw+KAElJSf6dqQcPHuSKK66gqKiIxx9/nKFDh/p95NfU1bCUEiklBkPj/ZpLxC/LBToEnbcH9oWVGQp8KITIAS4Bpgghxms1JqV8U0o5VEo5NCsrKwHDU9R7yo/EXjZ3HWz7NnAex0ti+hsvc6BNJiJSMa9PlBfLe/sGM8sZq1VRANeOpay/ayCu7d9XXVgBeP3pvPnmm/znP/9BSsmSJUs4//zzq3Q1DPDcc88xbNgwBgwYwKOPPgpATk4Offr04ZZbbuH4449nz549UcvdeOON9OvXj9GjR/u/GrZv387ZZ5/NwIEDOf7449mxY4duf6WlpYwdO5aBAwfSv39/zc1YtUkiZvhrgB5CiC7AXuAy4IrgAlJKv1G1EGI68LmUckEC+lY0eASrXriWkx/6NKbSnz9xP4WODK6a7jWYlHHYS/6+/Vc6OScjq+WOX//lkFwkMbqs3kArJiu06BZTi3NffJW9LQfy+4tTuHzKmdUZTJ3wzOpn+K3gt4S22bt5b/5+QvX8EnXt2hWPx8PBg4HlwFatWkV1Nbxo0SK2bdvG6tWrkVIybtw4li1bRseOHfn999959913mTJlStRy27ZtY9asWbz11ltMmjSJefPmcdVVV3HllVdy3333MWHCBOx2Ox6PR7ed/Px82rZtyxdffAFAUVFR4i5mDNRY4EspXUKI2/Ba3xiBd6SUm4UQN/vyld5eoUtyaQ8+2L0jZm+VmzK7YKihhUyqNRWc1asTrUdpOB+XBb5/9M/YjA5Ofm1tSH7pt89S9P2btH1qe0j6rtSWtNh9OruylJuG6lJdD5eLFi1i0aJFDB7sdaZXUlLCtm3b6NixI506deKkk06qslyXLl38LoqHDBlCTk4OxcXF7N271+/vx2azRW1nxIgR3HPPPfz973/n/PPPZ8SIyIA9tUlCNl5JKRcCC8PSNAW9lPK6RPSpaBzYk/vSz7ULiE0706zo0tCEOGS/EHFoMmOQL4tTeoHTHfHyen/e7xRlXsH/haVn5mfisGaTeahhBF+p7ky8tti5cydGo5FWrVqxdWts6yZSSu6//35uuik05nFOTg4pKSkxlbNaA174jEYj5eXlui8evXYA1q1bx8KFC7n//vsZPXo0jzzySEy/IRE03tUJRYPB5PI9cMfK8CXirq+6YxnDS6J16dW0L7koIr04xUJ6XkWMg1NEIz8/n5tvvpnbbrutWvFpx4wZwzvvvENJSQkAe/fuDVEJVbdcJenp6bRv354FCxYAXkuhsrIy3Xb27dtHcnIyV111Fffcc09CXB5XB+VaQVHnCOKPbRufciex7hiCcVnSg7rxwMEtJJVMxG0OK7hnTa2NobFRXl7OoEGDcDqdmEwmrr76au66665qtTF69Gi2bt3KySd7v79SU1N5//33MRqNcZUL5r333uOmm27ikUcewWw2M3fuXN12tm/fzr333ovBYMBsNjN16tRq/Y6aogS+ou6picvLsMm5iGkRNx49kLvaVQ5/+iDrvlwE4rmQdOeuNXz55F0EwjIqouF261/7YPfC0VwNA9x+++3cfvvtEW38+uuv1S53zz2ByAw9evTQdIms1U63bt0YM2aM7u+pbZRKR1GPODY6nXgWfQ1x6P2f/fhXFhEUpcun7337+Vf40dQqeuWC/4EnhpdM4R6wH1tLD0XDRQl8Ra3giTIri0SE/KkJMnKHVGRv8cQwjWMsbdM60UXc5j8vKvTuNyhMSqEdt2KQg7T7OrSDJQ9O4PD8e6vsY+3DY9jx1LG19FA0XJTAV9QKPy1ZVif9xqLSies7IoYXSTipR3uEnPc62bsdxWb36oMdVu2NhTOff4JvRA/++al+pKdKZtm78MSO2ANjx0M8Qb4VtU88/y5K4CtqhQm3jj8m/cQjikQcawaJeFB6ZMfmKmSfy0Zbz1/olN43kOh2eReBw+hquIMRZi1fhYnBZrNx+PBhJfTrGVJKDh8+7Lf7jxW1aKuoFWIVbjUmnvXXOLqJT9yF9tS3TYavreitWX0uH5KLB/rT/ri3F5n9TyLr9D9D+6FgTfN1YaQi6aS4RhcL7du3Jzc3l/z8/FrrQxEfNpuN9u3bV6uOEviKWqFdkKml3PIpou+4KKWPkW/5jbOgzcC4pHd8E9zQ32VKa6bXuv/I+fVjSL99eeC7YkHyCNw/J9Nr5bP06VRGn0eOze5cs9lMly51FG5SkXCUSkdRK2R2a+k/nvbsxzHWqt3bceqLS/jusb9EbKKKZf+OSMBLKdWYEjXfaS/hjbmOoIXnwEuzxe4hpDpMbG7ZnodXFtR4LIqmiRL4ilpBmAK6xYKsqvWMJZ8/HJFW8EbkrtWIfjSm6/se6gFOe0R6cbbgp9TeCCItiEpmXqOpI08kMnzzVRhPPPoAzpRCjK5Kq6XA42lP7odBjqd50eWMbju+9gapaNQoga+oFQxBcji1eGKV5d/5ogARJm/f2dJDu3AVvOe+mm1rP4tITymeRFb+GQgNf+fv/tSDI7s36jeagDVLizE5av6RQzuxVFyCpbzyRaf9VeExxqCzXzcD9mps29dZ/FU0DZTAV9QKzapQXwRTkXQiLpsnwvTR4iqLUqlYM9ngySAjr5wRf/qzZr7Dlo0nTHoLTwp48nngHw/FPObYCBXYhiq0QknmyoXYmj+WU15ZzRdP3B+R/se9PTk47VKNGoqmgBL4ilrBHT5drwJr+cSIWbTRPUG3/Jb7BvuOQm9he/JAXJZR3HHB5bp1wwWvPXkQBjmeji1q17JIVurkdQS/McJ9g3ZBqbHo4PjiITy56/znZVkefmnWKaLcx0mn8fYWFVioqaIEvqJWkLVsefNZqjesnd57pTqeFP11Eu7aIXQMooopvtsUmq8/msh23vxY8NWTD/jPk0omknl4bES5lnsGklZRxWKCotGiBL6iVpAptWvx22L3aO+B7g5YfXGpZ2IZTdzHs1krHFMVu3Ut1ug6/mi4kgv4OaNzaFqliigIe/JAhKy9jVqK+o2yw1fUChZhrbpQGNWZk1ckda6iLf3WquU8rSgXkpoj43KpHDbDF5rJgXFFdBH7OM2Oi0k9uj/m8oqmiRL4ilqhmip8H/HsiKp+U3pZWi+C1Q+OoVW7TKB/dUcW2X6ldZCOv5/Ynbpp16+wZscxKkVTQgl8Ra0Qsf7oKAVLVZY71dS7RxGQUUVnNVQ689wDOLo9j87Na74mITyVPeiExYvQsB6jHciKJoPS4StqhfBJ7Jq7h+HYND96nWr24aiw17pI7ChvZLDnlATJ3uiPmzCERVXS6VPLSkehiAUl8BW1RKjwWtaiH7OnfBS1RnXF2IO3T47SVhQbF50FWL01Vaf1LOL0y6nTvvYv1Q2iF6uqR8t+3+OJ1xGQohGiBH4seNzeHYqKmAk3QUzbfTn709J1SsfHe0s/jTIA/Sy9BdjoVjoaDRblRqkROYaqAqGLiDeOt4GCw4ei9xOFrXf3pPDju+Our2hcKIEfA3ufPpmcv3er62E0KAxhagenJYPMg+2iV6rmTPSc3vG5XtCz4In6haGRueKxKlxGyHArHd/Chs6nROTeAe953+Hdqx6MDp+ljmD69yUxl1c0bhIi8IUQ5wghfhdCbBdC3KeRf6UQYpPvvx+EEAO12qmvzDx6PLOsZ9f1MBoUBg0HZaLK2616t2NKy9bxtaWnG4/SWvi7yOBpzdeid5QaRLrhjKJ7d/z8kfaQXRUIwhe7Yxf4LXadgBTKNkPhpcYCXwhhBF4DzgX6ApcLIfqGFfsfcLqUcgDwJPBmTfs9ljTPzyArN3yWpYiOllCqQqWhkZb3eH9wlmuWt1bhjEyfOHTaEe4YutP50HHV6yaKnJ4zZbamWeieV8ZyenaouWUMURz92JN7YSu/wFdR6fKbOomY4Z8AbJdS7pRSOoAPgZCtfFLKH6SUR3ynPwLVC9NSx7jMo6lIOrGuh9Gg0J7MVt+6ZEbZFfz+wzzNPEuUuzepWH9Wq7/hNZozg8g8l6l6gUH0VEkuyyj2pbcIMtsM8Pa+tmR0b6tZT8bo9VIK73Kw0+nQLVP09iQc62bF1J6i4ZIIgd8O2BN0nutL0+MG4Eu9TCHEZCHEWiHE2oSGVStRIdpqlc0LwFUROA83MYwBrQlo+qEiTr/pVs3yniST7qzVIMfr96P74qneC6lK3zthb71ocWFb5PUh/HF0WLNoXdgaY4QPHu/51l90gpyH9VO5WPzY/92r2/+MjX2Z8+bnuvmKxkEiBL7WU6J5ZwshzsQr8P+u15iU8k0p5VAp5dCsrMR49bOv/YCV/zcS184VCWlPEUrpps+Z8cwH7Jh2gz8tHktxLQHqNo/hznFXaJa3Un33DaCvSje5oj0ONX9UokfNEmg9Nm7TOaSISNWVfeUbnHXpGZotVdjDVGA+gf/2VzP0e3cVsK9ZYq2oFPWPRAj8XKBD0Hl7YF94ISHEAGAacKGU8nAC+o2ZD976ijXNezPrxSk1akfu25SgETUuXn/rI/a3ac6pLwWCjgh5DIJsSDfx3MItDmjr3pPKLqnhgMIIk9/RfacJbdNPQBgjK74/Yw3DdALFX37N6ZrpFw7St2oyyPGkFF0cbYCKRkAiBP4aoIcQoosQwgJcBoQYSAshOgLzgaullH8koM9qcSQtFfOhm9mbpBdEOja+fk73w6RJ47EmkVZ0KQ+ffr0/rQrHkJpU96sg3ZhCUmn1hbQ9uQrrGg3i8g0UrtKJXljXTl+aw9KFgcJ0M+26agv8H37RfsSMKQGrpp13d6b0u+ci2lU0bmr8LyyldAG3AV8DW4E5UsrNQoibhRA3+4o9ArQApgghNgoh1ta03+rQ7FAbANKLkmrUznpzh6oLNUEsdu8Cqa08WAAlUnhoi8rk4qpj5SaMeN5gWlTo2cQL/TeeKXI9JKlkIiajdgW9mXyKOaAa+ih5Iu/P3eI9CdL5F06bhGvHMp2BKBo6CXkqpZQLpZQ9pZTdpJRP+dJel1K+7jv+s5QyU0o5yPff0ET0e6zJLFA6Tm20hGEiPV/WA98x1fg5he9c7qsSvtUWNn78L51aAjT2LoD+WkUzc+QEpnTR05iStfcnBO/kzdydTkmKt37Ott/96TM2DWThc08HKv08G4rzdMasaGiob7hq4DGdV9dDqOeIoKNECmnttiyOkxPYRzxovwXe3tjZdxQ67hb5bRj32Pu6LzCDjkpF70o6TJHlp8/PIVnHK6nFmhqom3QqKUXeiFgnjQuYHJsqDrGlmfdL1lm4lzef+5qfnhivMwJFQ0MJfEU9Qi+Gq7YC3WFtWZuDiRuzR1tt47CN4M5zxuqqh3SDrOjslLWYNax3UgygE8HQEPa0u40WIEwFJC6gZd4IAF564hGOtLHyib07ju9fwLVpgXbDigaDEviKWiHSt3tstbQweur+NtWbZbuKI/d3GF36wdeFR+j8TInQmeGbdF54Rg27flvpJdhMGjuQ839HynD3y97z1IyuIclOcwsA7CYDqcUT6Xq0H298kMd/X47u3lpR/6n7J0nRiAgWi9r66GhYy7WdkSWXJNhcMkE4LZm89I/HopSoptMenXSDUcd6Ryd+kdY+gyWPXq+xgcuLNexLodL3jtm3ec5t6oMzrYQDzeOPuauoHyiBH4yUsOZtqCiu65E0KEJU0nvXef/Wg3XWRJJUov0yOurWd1dQHezJfUgrmqSZZ9D5wtET4MjIF8GKtP4Y9L6gTKFfENIn6Ct3BkthwFp+CSnFvvGV5JNzTyecmz9nz7NnUv7DW9rjUNQ7moTAr1xANLotUcsVbpjPtFd+5Od/X34shlX/2LkEygtr1MTCx+4B9BcgGxtJUR+hSIFssVtJK9K2n9dvRrsPg85agEFjo1Z23umaG7gAjEbt58JQ+SYPUx19/+7DfJh8FR+//CbvHzmVD2f8EFqxOI+C185X1j31kCbxVFbYTgW8TtCiMW36JxxpbeRfaw8ci2HVK9wlh5jz5HP8+vQFNWjFxNpmXn2wvr+axoUMXwmtsvz5VCSdUK06zY5qf13ouYjQMs932Fpj1HjcPW6Xtj2/lP5PN2kIfSF89sshWuy2sjOzLS0OSA6nhpqNLn72BqZvP4Olz9+Aon7RJAR+MHLdDGTOykCCywGHd3jzLCkkF0/ijGYjvdGMVkf5VLUfZfe9HTk68+paHvGxYcbLz/B7Vlte3qpj4hEN30zTntyHFiVXAlEsThoZx8SFhA4GnZeNwaD9b5iVHxnTYfHMVzRVRkePBKJseQyhKqIOtlY4bMNpeWAoTutIkot9Lhk8HnCW821hJknFeSzMTwOXg213daVk0dPUGGc5OMpCkuThHTgXPuDtW1ElTU7gT3l1DfP+EdhSvuv+Hrxzx404ty3GYvfqLs3Odqx4bBKvv7YBx+FdoQ3YiwBY+/adzLQ9yNs/RAvC0XDIOVxI86OXc0LyiDhqR84Q9dTLTYvavQjCo91+RqH2DmSHNdIZ4VXPPI6WGOh5SvdAaphKqVJFKg1pvr/e5yb3meGsvWsIHeyt8JjOpbOzHds2Lmde8rlMn/9bjYXy9sdPYvsjoXs2lzxxHW99bOTwb4tr1HYsOLd+Sd4/BoPTXut91RaNU+A77bD5Y9g0JyKrvIWLHS0CQvo942gOtWvFB/9+h5TiwQDYk/uziJ6UZEn+9fjjIfV3PDgIgOe/3EDr3QaEJXTG0VCx+fy1eAyDIzMdpVB6TP3dNRhE9b1AJ4wMPWdnIna13N/GXYbBECmILxzUo0pvEuGRtKblD+Hb9OMw+NbKDG4L99x9By33tKciJYmtDwzi0PyIgHgxM8fZj7mE3p/LzT1xJBXw5AvPxt1urCx4eSozj07k9x8+qvW+aotGKfB3v3UZL//jQ6Y+/01EXlLpJFKLJvlnG232DSClcDJ5qWl4jJn+cp0ODyCpZCJma+gTPd19PACndjiViqRumB2Nw8NgeAzaYP73z1P55cGT4cgunRJhkqEJRVZKL7iozvqWhpqHLmxx+FzSii6NSG+W2UX/37FStx8mPtoUppO1Z2QglKXwcNIJJ1ORdCLJR8fxiXEoM5aHThxkQQ67Hx2IzN8Wkm6fPRn3b18HFZS0PNiFlge6gSdg8tvuYF/Mjotp0zwo5rTbxcFXzqHilyhB7uNgZ3pb0goKdeMzNAQapcAf+/EGSttnUJyt/0Dk/mMIOEqxJ/cDIK0w1C9JZTSjcBvozgVelYfBE4euuz7jf7glHMkJyXqrqCtzjQNZ+8hYWPZcFMHvJX9fjr6t+bZvazrSeoXU0Zd7qf96LZdZ2z+ULTmDzHztsJ7+mX+YqsdlGYk9uTtIb7oUHkTQgnDLPb0wur0LvBUb5nD4lVF8+cwtfOC+hC+eud1fzrnvV976tgUL/h1YQ3PaS3FaR+KwncGuP9b70z1GrxuIYAOk3I0LmbnrVBZM/aCKX189WuSdgNt0jm58hoZAoxT4t3S+hGbFl5JSPBHpW5AN573SE/nprupZSwDYkwcgl9b+56Nz41wqFv2T0v9OxvXrsYtEJJD8+HDAKsS1bTFdjgykQ8FFvFfeganT8/j+seg3/HEjB+n40pF88K9pCR5xfab+C3w9mjus2JOPj8wImvXruXMWvh29Eolwe489RisVycOw2L3RT+e9Po8Z/xvBGnc7Wua62CACQfJmPPMEruQidqQHXGc8/XAgWteJ48/Guf5DKhY/708zOgLXeuiVV5NSdJRdyc1DxpX38hgO/mdslb9dDym8ayNVRjqrxzRKgS/FGP/xssev0izTPD+TFVl9/OeWiuaapoRphZGfu1NnVBEu0VVR4wWqmf/5kjfmFPL2itZ89OrMGrUVG97f7rRk8JVlgD91/gsv4rCNwGHNpre4nfJmpSwxhcWoD3MG9qczxqCNh9wWGQkcs6K2MOpE/yorLiLwItMT+D7BKA0hHjohaIG3WXNspYW0KmyGw3Y6WQXNofQw+54YxCFbcywVl5B+5HywH6XwgWwOFAWiqN56wURmTvmON2flIaQ3rKbJaQa3E3JWcucFV+AxnUvz/NAJ3Yw9A5mRE3bvQmhozkZO4xT4QbrN74z9NMu4LKNI2nuj/7wi6RSCZ2Qui36wFHuzEmzlPSMz3C6cMybw5S3DKXh7Ijn3dKJs8QvV/wFAQaYVd2oJiAJ2pbeIq4146XD4JP/xjmaBmZfHaMFaPpEO+aEBRMIX90xJqXp7Okkt1t5N2thw7fulrodQQ7S/Trqe0MmfEzzD9zgDQjMg8I1orAeDlDQ7NAZpOB+Lw7dvQ7hZ+tY9vFd2GbbySpcOyWx6+Upm2++jVbOAoYXZaORIhglnSilI705nk9PM/mlX8sVTD2JxVFoRhXoNTSlxkFQSujO68PPH+PwvI3Dn/U59oHzVNA6/PLLW2m+UAj+YTof76OaF619dltj83VvLJ2JPjhT4uz9+mJlLu/Nr+068/Ws2c5Iv5/X/bsO96ydvgU1zIN93YzntHPznUJy/LdLsI7l4Ihb7JRjdF5FeOE7T4iiRmNyBW8Ge1M3vXqLV/sgZkTSGxqgPV9/YLAYMGhLfY2g6Liu+eeZe/Z1RDQC9kV84aEDQ+kyg1Ecz3gkq5bXSEdKkGbbRUXYUl9krjCujj3mMbj7dWkzGwWLMDu9zaXSV8/K6Iig8RLorsPlLuA0klUzEar+EysEYPGYG//trfkrphMnlUyOJoOfb4wHGIbgw5Ov7/a8L2Zrdjv8+82D0C3KM+HDGMqbnnFFr+woavcC3J2uYGSaY8g+ug4oSTnh4CkfTykjedws2p4nM3Ul4MgSfPfsIHPiFqc9/w5JHvWEAt/34Ee8VXMxXL7/Elju7U/b9C2y/uwtlnz/A6r+GfpV4jFbeeO5rjZ4TR+qRc0LOVy2oXDCrenE6fIZv8Bg1Z/hOa+3NXOobPyd1osLWruqC9RS9+LpZ2d2DZvgBC7bvvn3bfyxFkMD3RN4JT9x5jd+e1WLf7y3rMdDR3BqXZSTCM9bXjmBo+om4LCOx2AMO9GzlwcYYRl9fRh4YeTXZ9muxlnknbh5jEjjLyX32DA4tmeqvcTRvp//YKRwkH/ore0yhrrZdS/+N549IKz8/9qP6eTXgUGoKtrICDuytnS+ORi/wjwXTlnUg9+G+3D/yaiwVXjNNg2c8DtsIkkomsjW5M6/e+TjF2SZWpPUHYMSNt5JSWMDm9I58nXo2H3y4kQWpF/P6x0eY32FcRB9Frc3IfT/X2m9wm1NDzj/67kffUQyG5mE7NYVoyMtaiaF5XnZdD6FGGFzaL/pUmxWD2+v+WQZ9wbRuFzyxqmKGbwy4YvCvBkijv2ylnh8MWByRfods5QFVTfDLxej2msga3a19eUZ2vHA+7x85i/63POCv0/PMIRz492goziPt6CkApJQFvUTcTt55bxdfvfiqrmnq1v9cqZleU5KLLwZxAYNGnVR14ThQAj8BuC1HGLHUjNkRKagBsvK6c6RdBinFE2mdNxyAu8Zdgdt0Li0PnEz6rgEUpaWSkdMKTzPosHNURBspxZP46rEbcL4dv5VBdcjOaEHOPZ10HXeVfPkER6ZfBXvXR8zw045OIq4Qh40Ip/WMuh5CjfCYztVMb3Y4LXASdG/YgqJvSYNXoAtp1twNnJmWESjrm+kLjwmh4eLBY4jc8Gd0B+nmfWobIYNfUJVmoYIHfyqi+YEK7jk/YFn2l/Mn8v7+s1n84i0Ij7d9S4XNq24tOcjvqz6hJL2CTeltKcsJDr/t/S0tDvTjhdVHIsaVEHzXdPI5tbO/o+Y7NxSYnRfxQJ8sHHobYUQ2LUqGAFBha4fnnfMRHu/MpSLJa0ecWtiBiqQUksr0w/0+uPcgu1aN4bj1A+h7fG8yb6g9vb7wwOzkK2ihM8N/a34B0tqJ3itvRRhP1CyjaHwYPGZNL0mZh8bi9slcj6jUt5tIOZqFI8zTgyFonukRVl+7Fozu0ytN+AGvwK5cADa47XiMvsVgT2CtzWPwNS4tQfV8fvuFgdNbno7TOJKUIgce362cKi2kHirke1c6nX0TE5OjGYsfvorUljbuXV7IpD4vk+IsZsrz/+Ke1+aHbPayJ/djcNIw74nbBTnLoOuZsa/Z2Iu8nkSzNAw/fNjM0T37xosS+AnCYdP3QVOR1D7k/O0VvZEtQ10yuE3acUiDuaHDdCpM85nb/lw6/eLmztlXw0l/AYMZTFZoM0C7opRQfgTcDq/744yOYPE9FG4X8odXgYEhVZodbok4ZKIiqXNEcy5TM2RqBWaHm1lFHk5Ns/of9kpEeHQlRaNAb8NhsErQ711TJOOwDYwoa3QHBGOlEHebhkQYUUhhBJ99fmU5b3qG/9hl8m6YFAReAsHWOR7jWN/fgADNyO+HPbkPrcs+BXwvFJnK7PIMtmzcztiTRkMRuMxpuFKzKXjncjzDrg39ET73Ffs/vJWl3+zigh434cw6jmYTnkG06Apzr4MWvl3BJ94Ezdp7n8O1b7Nz9lPklmVy2guLcU6fgOgzlm2fvE73tMPAPO94aunxUQK/DihuVkp6wVjccVx9k+sieuSAyzyfKZ8K3J+8isNdTLfUQk7J2kluWTN6ph0i1ezAJWy4XE7c0sCvhdmkmtzsK8+khbWQ7mmHWV/QFpvRxc9FJ0FK6IPptJ6pOwaP0eqPTnVS8wmasa3Mrqat0mmsGDxpmulGVxluX2hFt09H7zFkaJZNKrH5lfceX1mp5ZRIGHCZMiOS3cFponJjVyDNbQxE5rKW76YiqSNGVzlu38vBafZ+VVvsGf7NVNLQkiGGmxjWcgtHHfsD9SsE0zf25tlnL+XhMz4OGYdzzzpOmvYh1x1/Mftye8LBdpyw6VpaWvL4sfAS7BU7MBvMdJw3nrO7FVLmkEzfMoz5BSb6ts3mlxsuJSn1LMp/2kVh14l03hcwvxbu2tG2J0TgCyHOAV7Gu8I3TUr5dFi+8OWfB5QB10kp10c01ESwlk+MS9gHY3JexNH2c5BS8sbilUwYMoA/PFfxW7qREzynkH1wJ0eceTiMZgzpnSjKXMiW3/fTpnkHmmd2YFXxELZ0zKNVeT62JDOpCbaY1AtXqGjYaO6+Bb+wB/x6aJdJx8xZw7mbx6CtwnBrxOd1hRkYADgsQQI/qI7T0sqXFnCdUvk1YvC08X85BCyqhmO2L/CXTS3MwmEt5I5xl0OYYc63zz/EHQOvxFJ6CS7TfCxlB1ma2Q+LpTcmTzEV1lSER/LgZzm8zJ3sNxRR0uEoE5P/jduUzNM/XMe9I3viSHfR6n+DKLT8CMJ7fcM3rCUKIWvo6EoIYQT+AEYBucAa4HIp5ZagMucBf8Ur8E8EXpZSVqn4HTp0qFy7dm1VxSJ47ebad5VaHzG6vsTtW2wT7i9wJFUgPJBUdibOoAfC6CrH4F6F03pWXQ1V0QgRHldCHLodK4yucoR04TKHfrWYHN/gsowKS/sWlyU0nkBxs7mkFUVObGxlm/0+uirxiAUAGOT4mMYmxafcNvWlmMqGI4RYJ6XUXAxMxL/OCcB2KeVOX2cfAhcCW4LKXAjMlN63y49CiAwhRBsp5f7I5hTx4g6yrJDGsZh9mwqdlvBySbhNStgrEovRVRp1h3owlop8Tf/8SI+uZViiCZ71B2NytcdjrEAKg39dQcjIL5v0I0khi8yVhAt7iF3QVyKktsVfTUnElW0H7Ak6z/WlVbcMAEKIyUKItUKItfn5VfisUSgU9QajRzs2hNW+NyLN4NZ4tqUHoyuyDeGJXCUyuOP0f+OLUGauKAhqK9TdgsPaDZOrOGQR2WkNdcQG3nCVAEZn7W6KTCSJEPjabhGrX8abKOWbUsqhUsqhWVkaMwCFBp9hcnhdNEg+wdb8Aw5mzqI86QOKm80lR0wlhymUpc4FwGJfxs9l/2C/eSYmx3cJGUHlQ2Mt352Q9hT1F4t9BUZXeWSG1Bb4wlPq++vyp3lEpB27wePCIF0R6SZX5AKTyVUY1L4z8Fd6Xw5mRyDfUnHQf2z0vSiM7kCayem1xTe4HSA9eIwWhKcYk9PXbxVhLA+3OILB9WWo4Jefsc75OCXpc7Ha92Er2wqAtXw95anaAVQqbLUfWCURKp1coEPQeXtgXxxlFDFici6ioGUh5ZaVnHSqG1suyK4VbNn0O9mH93Lc3GJONktwgr2bwHxY4mor+b00hT3ZsObweu4sLIT9ezl0r4sdswxRrXJiGpOrCIcxC0HT8TzYWLCV/QqY/H5tAukbcZm7RyySSuHE4CnHTahKROgIfPAKfIPHidun4/eYSv25lRY0HqMFo0+4G12lflNlg7sQyPAdO/AYLRg8RwHvbmaTqxSnJQOTqxi3MRmP0YjBfTSozkGgVciIPIaDQG/fuAqANhjdZZicFThs2QhZTHnKepKLW2DwpFKRNBSzoxCnJSOknaPNZtNn106K+ntIzSqlcJUNITvSZujXjFjgpqTwMAeu+5G0pKN8P/9kvslZySspNlakSZBeP1RJJZdgLV9FRVLtW7YlQuCvAXoIIboAe4HLgHCH6Z8Ct/n0+ycCRUp/Hz+l6UWM2boE2x8g5lZ+PFloy29YTh1O11+m4Mw7iMFmpfjb77D17kXx90to6fawb+PbnOroRLuLr8fYPBPL3x5lz02LED8bcNhOj3tMwuMT9LLhxvtsqtiT+2Mr+y0iXQoXRtdBDYHvwlA56w3SuUsRNOv3pQuPCym894TwOMD3knCZA2VNzkO4Td75oMA7wze5CoP2puwHOvv6qIy2VeSvb/CUAhkYPOVIYcZjtCFk4Kugcreu8Lj8AdkdtsKIfKM73/eVko3bWEAH9xryemfhzumOQQ7F6MrzC/yy1Lm4hJtzNy6j56ufsevBh+DXA2y7ZwFlmcl0fUDS7qWXcRQcIfPeJwALl7dYy1VFVjJbTkL89jEIidsk+Kp1OW5zES1l7cfHrrHAl1K6hBC3AV/jNct8R0q5WQhxsy//dWAhXgud7XjNMv9U034bOpX2wXEhoNsNz5B+wQUIg7ZWztLeu0SSeZnXn3/SoEFIKUl5vxXp54/FlOm12smcNAmOG8CKIaH1bWW/4DEcRnjSqEgOywRMjqN+76LeT1nvQlXIQ69oQGjNLj0IDXWGNLjB7U03uu1+M8hKwe5NL8dtSvEufPr25hqk05/vsDix+FTnAu+BueI7hPR6txWeIiqX+TxG35eD9Pjt9YM9rwpZ4st3+tU7wfeh21juK+fxb8Cypziw+T4ySjIOklK0mIKsAjIOedXILnMJw/r/maNffskVRQu5YYCbokyJtaIXAKftXY51r4duj00huWcP+syd7W2sT1+QhfT5bau//5ZXXA5A+caNWLp3x5iaSvIXJyArHLiOHiXz+X8hMTJ7VAYdy3cAJkrS1gGJN6xIyHK4lHKhlLKnlLKblPIpX9rrPmGP9HKrL/84KWX1bS0bAJtd/ww5t5Vt9B97DAv8x9byHMqTQ7chHEr5b9S2Dzab7TftspvcNLvwQl1hr4cQguZXX+UX9pX03hTplE2KUhx9f6Y0PTKc4ZNLJuC0fA+AyzSfI5mb/dvKPYbSiPKKhkCkwPcYu2unG1x+vXaIXt4QUOcZ3D7hLwxePx2AkIHFUZcl0G6Fxft1UdLsCPh0+FKUBI2ssr47yMY/oD6SPlWSkM6gPgIvF4/B7WtTYCvzPncVxkC+2+jBNnAlxx3cwOHsPKxl6yjKLKPjXybT/9OPefWMSxlsW0qwc/9elzxO7zfnk3ZWqFDus3VLiLAPJmnQIIyp3q+lZmPHknHRBFpedy09l6ygz+o19MpqjaPbEsp7fkmmbaNmGzVFOU9LILdszA05l0E3XXmq90a02Ffg6PUNb2z6Cot9KQC2sq2MX/EDDutHlKTN0bRAuPSLpaw/+CkHbW+RaU2sn3UhBDJso4fTfISz3vlDs/xiQxtyPT+SnzGblmk/c35O0FZ2g9Lh1wZxW6XEiMvcPjLNlIaWwJcGdyDMX3AQlCAhKsXGoBqV6h8nJqdXkLuDAiaUZJaSZ53JvvLV4Nu3HfzsSJ/AFkF7hlzWwMtDikrh7/ILfClcWMv3YCv7DWkMWPn8kbKGomaz+fmnH/1pboPghGUtOfHap+iWv4uy/qtoUxxw2jb8nr/TM+PykGuQcfHF2HqHrnnEi6llSwzJyUy64Q7O/O96zn7vF041n5GQtiP6qpVWmyg95ixk6bM5mnnJrt3kp3zAtvwNPDSznOMuGMcGy+d4ig9RmO6k1wPzKXrtUpK3uFgz2ImnIIXkkk6sN3zO/iP7mfztEu59bSpy4Wy6z699M7AVR77iL79tZdFttwFgK/sZe7LX/ULvDT9z1YMPY/j8U8ynnEH3/77CT5O9n7SVsylvncgNKIr40FKtJBKtYOZeARsp8J0WN1a7x1cvoN+vsNkx++S0y1JKRdJcnGbIrGjha89BQcsvvMF2giYYErhk0yqSr32Ipd/7VDEi8OUgReRvd1lcGH1F3GavesdjOOT39SOFi3XMIMlkoKuxD5W35UXbcrEafua8R/7DSq/RGh6jh97zvSfnZ2ez48+T6T7zXX9fxrQ0Wj/4ANx5i3donsDLKJGYs1vRe8tm70ktBc9RAj9BWOx5WLueBeRo5l896VF2/9+12DO60Oe3L3GXlNByxGLyz1gBm5Kw9e5Nnx5/JmnSIFJunMyqCe0oa7+Pv8zfj6gAc+vW9Hn0YRzXXYO1U6da+AWhD/YN2af6jiJvPIPVSr9/PYXrnrswtw5baBIS5OeUpZVjsdf+IlTT4dj7JhLSrdmvy+L2mz8G47S6/QLf6LIwrOx7rAfdbMis3ETkZMy6FTizBIs7nOKv50bQ9cl3SDnlZJYufgMAj8GJ0zIPt0l6fe/4sJWtx558PE4jVHrVL0kvweL4mJzkfLqWeHXwUrj46/p9IOGb03v7BL7g+A8+puKPP0g+6URWzl0OQLkj8LWQ1L8f/X9cqX1BfJfCWpET7bLViOqqaatLo1fpGNwLYy5rKf8h7n4Ot1oaNb/ZSSfS7cX3Of69DwEwpqbSe/06ere7mhOnzAIg629/JXXECHptWM/w0gGMnLmZHnMW0uv7FQAIkwlrt25xj7E6nP7Mc94+/Q986IMvzOYwYe+znhCSDu1XcVLujyiqh61sm35mLc/wtft0g4YzZJfJQ+X9YLEv86cfqQis35Skl9D3hL/R+9aX/Dp8cNP72ffpNfFJyp2BWbLL4yR1+KleYeebX0iDi4GGVQwr+AEZpDv/yfE5RWkfIo1B4zJIBqQt46xDpf5xSYObnouW0WvxiqCyAnN2K1JHDMdgDmyqenPh/Jguh3/qU0N3NHVJoxf4m0SkuZkeh9ssrtYLIphwHXhJ+hwc1oMhaclDh2JsFth6LoSg1T33YO3aJaScISmJnq+8SJ/ftmLt2hVTy9Dwa7XN0WZzMKZ5/Yv4oxBVNcOsFEhC0m9HH3pf9AB6s1LpW3xu7JSkz9VMt5Vt0UyPhl4MsdpSL1T26TG0iEjflbeXiiTvV6bHEJgdv/PNJ/5jt1HS4oYbSD/77CCVjIfk4weTcdEEkmVAuVBRHOyVrDIerZteHa6iz9n34hGBScfkAxWM3bA05APDY5D0TrqY016dRuU95zG4MGe3wtSyZXhAtgg2f7s5eoHK32TyvUxEQRUl6y+NUuBby3P8x0d+z9UvCBSmz/Yfj/viEEXNS6KUrhpLhXfLuBRQ2kxvI0p9JCBQRm9aFpFatUbR+1BLIek2/R2yJul7y3SZtRwqN0yC77VghPsLXS3M/9JWa2dEvciRjZU0m6O94zVRSA8OW2SoxmvGBXzDS+H272rd9M2vgfSgRVm3fzE3IOTvfOx5//HbS4N3qPqsdIxu2t59F1lXXYnHWGllY2LQ/C/o9ujbOIPcLUgpaP3II5izA2MN/irwGLT/IRy2j/AYP6Z527aa+eGsyfkWl2k+u5pH+RKr5zRKge8yBQIAr87XFuBG11fsM89g7OqAcOuzYT0vfTILo+vLqO3nyJf5sfg+/7mtbBMbf/eqgwqyvsfk+IaXPpnlz9fyJVLfKMgO+Dbp9cCb/mOHzftgOSwHqmjBJ/BD0nRm+I0q/KHObzS6dH/nuC2/aqZHVRVomskLhGb8KRKiAgpv2540F6d5PiecNw5zxRJfIQ+7kheQl/QBWe0C7rGkJ1DXbapcgA34vLdmBL50/1j5v6BevNZInmCBbfLdWwYjpubNSR0xnJKywMYrqSHQQ+r7pJzBE2rpdJzjRzqn/Riz3vzR615lYMpyTtvZcJ0ENEqB/1NRwD9MmUfbAVvX/l9z2crV9Hg6sBovTCZWvPctrfutwJ78EeYKDTfL0sN1a37n/o3ez1CTs5iygct54O5XADg+dz3Nhq1k8fQvKfZUYHIcpSS9/uuz2x4NbHxOHTHcf/z8Fx9QnjqXZUe+j60hQ3RB47TMj+VzocEjAaHzeA2cpq3q0aMobbbmNfO+UCKFnbV8R4gJY7wE+5sxOwo4segHjjOtwmi1EjC1FFy+ejUTf1wZIjjLnQFVj9tvFqltI5LWPLAvRAqnv91KPBqxUWZ+vyiQ7wm+5ypVOoG0SnWryRk6aek/6BYGpozXHJMWfc4dRe/0SznjjRkx16lvNEqB/+eU3vzm+hezcq9nxxoNlY78jG7LutP7i8WknBQaHb7boEH0+TKdHuXrYNiaiKpbnf+mx8df03PFKsrS5nK4+Rec/dYWjjvBa3Uw5MrHGDitjN7HD2Vg1144sxZiM/we0U5945I/P66Zvvif7zDi4FJubT0Ee8pHFKfVLI7uYOOKGtWvbwh5VCdD25wQ0F941wl6oaeS8JaPfBMcar0OrcVWPWzlOzTTD2Rt9B8bXQfoPep++rS7EggIUYGBHrO/pMf0T0LqvvlVIDqUNFbqvrXFjQgxQfR+DRiCFO8acdDZsiSwR8QlIwV+0PuCN1d+BHxGfuvQ57n15D/T8eEHNcekOU6jkdYPPhBpmdaAaJRmmSdPeYNmZw7BUGojOTXUD4jB9SWLdn3Lrd/84k+zlv+EkOnAWQizmV6Lvibp5VcpfWUKK09YF+Ja4OZNO7D4zCJP27MCy353yM665mPPo/nY8wC48Iob2XbKqSRNvrkWf21iSD5+MBD5RdPngnEUHC0m46KLMPx1OJZ8PUHi22lbRaSePh2vY32O9oauhojEg8G9EI/xvLD0xOFxR7/mEeWlByEjFUrC87nfpW8w+1utJrM48iV06paNbO54qe/MRcvLLwvK9bUuDVi7dAmvyvKPlvuPnWawloPDWvVidWnaPkwuKE8LuGnQWnTNzG4FeBdb9+ZuDMrxFQ66D7995Rt2fHE9lh9VnOVGOcM3pKTQ/f1P6b16XdjsAbr0/o47ep8Wkpbbagu5rUO9PXS8/a/0+W0rHlNhSHrPj77yH/e67El6T9H/PDc1b07PtWvpdOff4vwldY8wm2lx3XUY09Ppc+6D9HlkWsx1wy2XAFrdeQd6gspWXv+/hMIRkDDp7hHa6yQuKdC8ZgKkRrrXsipyUIXNtBd4x6yO/JIFOPGF6cGjC8uNvpzfvW9//7GLPArTPmTVkU9Dyjgt8/3uQir5Nf8bClLfA2MgfIZbw2Vy8HN91knXB0bpc4TmsAXG22XAcfQ8fAbDgtS3TZVGOcMHsPXsqZne/YeudJn+r5C0i7/bjLGsDJ6NLF+SUYA1yNjG0rmz/zhj/Pgqx2FMTamyTH3BY/zYZ0Gj7bSp0hFbNLQiAMVKUfNNWMt7xd9AvaL6b4FtSVvoJCM9lkpPpMCL1od+z9pfCgOmf8zqZ/4XkZ7Upw9eT5VwpFXoV5nTWoaQ4LKEWqIJjxtpMIbo82++7BFy/34p5/e7MKRsb7kae2borPvuE27G8eXrtLrnVX9auctOtDhal/zlBv/xrsz/kUkehUFqKmEy0emlf0dpoenQaAW+Ht3nRwYZ6LdiBdKj/ZhYTDtre0j1hu7NfsJUWDPrDkmkPjUCPbVPY1vMrebvOfewky2RgZV0tfFePXVkJ16TxMh0N9rmsF6VTEDgF6fNwSgFwS/+LHuoQ7AluxczvIubf/+4gFsJCNPC9HkIowyp23zwQCz3TyV1xIiQNvr3+hOOHdtD0nrd8TdKhx5PymmBr/C3vvyEh8+4LhCQJAzvIrKXM3MPYmuxh3aTXtUs29RpUgLfYtf+ZDYkJ2umA1x84s3M/8Z77I1I03hjwfYuOQVL1zhdNldSAx8gjclYE6r//hrxxrtsuX9DRLrLru2BVEih2Ynb5fH7jQ/G6ap6REbXl5y8eSnWZqGi4byz7wo5v23whYiKT3l/9DWh5dYuRZpC+xFCRHiVBGh/218i0oTRSOrpoV85Py5YxaevTqU4zYk3PLYXg9uBxxD6hXDaf96laP58WpwRqrZVeGlSAj8eWl80nvIfvDfmCSX137yyJnR55aWaNxIye6+eCNcSUvWFomZzaFY0SSNH21IGg8RTzd8f7ra6ktKKMs0XqUdHt+/S2VrqdoWqhmxl23FYQ1/w+S0KueLat/CExZPOGh+qjhlx3/3kv5JMq9tvD0nv9cpsZEViPXt26tGL/s2Wk/pz6BdKUYuPER4DMMqfZs7OpuVfIl8kCi9K4FeBEIJT8rybqrqdOLmOR1P/kVFkdmnaXKJ+IVVh4aOFyfENLsuoqgvWkPPWL2FlNy2Br4MUCXN4eGjHfugema7nQVMKF1ovgvLy0pAn/kirDRQZVgHn+NOcLkgP2oehhzE1hdYPPBCRnjRgQJV1q4swGullGk/6A6ND0sesXY4rvf5OEuojjdJKR4/gAAzVoe+Ex+g74TGy/3pbgkfUmPA9eFFm+GdsW44WZkdkQOtYefSHKXHXrQ49Hn9HM133BSckiXq8luRt10zXez1WlGvvLl+zLTIwx2Vfrgo5N7hDvwIMri/9AbjrknZPPEbaqaeEpPV6eia9bnxeu4JCkyYh8I0urymlFJGWCLGQcfFFZFx8USKH1GgJUcuECcM+t3sX0hKpq//WGmkDXhuknHJK1YWCcFpcyAR5uPz01Xma6d4NWZFvnDJnuWb6xOGXR6T1/DbUy2tZReh6gWy9jfKuP8U+2GNI8tChpJ97bl0Po0HRJAT+Hls+Fvty8rIarg+MhkKwlU64YE8780zvQYSuo9IjpzbeMHqfaOb12xi5yFmXWMvX4rB9xM/7YnRFEQNDR56l7UrHrb1KcGjbLs0vj1seuzciLdjhGECpPdTM8vRtSYz8UNtOX9HwaBIC/4TycpKGL6ZXflUOwBSJRU+E64p2zVST8ygeo/ZsOXxjXU2p9PwYPx6GuVZw74R/IBJkZ2owGDQXbV06+qQlebvRupamIB/wesxbFap26/vBe/T6eWNM41TUf5qEwD/38ecZ8vxBzv+7xs4qRWKJSQDrbBiqwvFadbGVbdJMP5zygWa6tXwPZanfaebpouGkrGePG+g3cULCVDq6XXucmtd70+L4de6L3g71FCtMJgxBdu6Khk2TEPiW9u3p89tW385BRX3D7x4gmolPtDwNTI4iylO012xcbr3bXm9Hqz6l6bsi0lrdfjvCaETK2vXd4hHaZplZbdqEBBevDv1POrGGo1LUZ2ok8IUQzYUQ3wghtvn+RhgSCyE6CCG+F0JsFUJsFkLcrtWWoqFTnVtJW4cfj1mmfg/6bfld8CaAneVLwhsPjCGhM3yNnbPlOhuyYlRzOcICzgMYjMrBWGOmpjP8+4DvpJQ9gO985+G4gLullH2Ak4BbhRB9a9ivot7hdXblMsWy8SosvXKCr6fzFtqO2OIlkRu8bu1zfWhCFCulRFPijC2imkcs8MYhCGK/bTqpQbL9F+t3HEp5P5HDU9RDairwLwQqowHMAMaHF5BS7pdSrvcdFwNbgXbh5RQNm51p2yhLnYusOBR3GzKhwaH123JEEZTVjcbV487bdeV6bbuKcJYcIJa3iiPJyWBDaByCpRs2cNMtj/jPr/ltDxet/iHRQ1TUM2q60zZbSrkfvIJdCNEqWmEhRGdgMKBr2CuEmAxMBujYsYZ+XRTHjHN278Wato9ej2qbT+rhMn2MyXm29ySK7ErkZNnkqq71kD6iGioQa/laijNyiM8fU+QV+GTjNgYHbYoVHifSEGmJ4zB66N3u6pC0bXm7sXZo7z8/7qOFuPLy4hiXoiFRpcAXQnwLaIV4iT1UjLedVGAecIeUemGCQEr5JvAmwNChQxubP61Gy8nTPqBk8WIyegb5AIhBDZOZ9Avl5WdHL5Tgu+Cou4x2Gt+20fT+8RAe8co+YBVtcg/qlK4+bz8yjd3fB14EDtunFFsrCH6hHE2bTXObkey77w6pu331npBzc3Z2hE2+ovFRpUpHSnm2lLK/xn+fAHlCiDYAvr+ad7MQwoxX2H8gpZyvVUbRsDG3akXmZZdVXRBCJqsnG0/VTK9NnEft+pk1HIOQ+jr8kW/9xolZ42rWQRDnXBq6+1sKuHB1qOpGAtdNvj+ibkpaWsLGoWg41FSH/ylwre/4WjS2QwqvycDbwFYp5Ys17E/RgDC6tYO/BM+jezz9FLFY6VR/7q1fY8t+bdVF/PP7gGQPXhAO3wfb57etdHng73H3Eo7RaAzpGyHp/mLoHgOPEawdOkTUTfSGNUXDoKYC/2lglBBiG14fpU8DCCHaCiEW+sqcClwNnCWE2Oj77zzt5hSNiQrbqVUXIiBopZ6tfYJl07a83fqZ1emrCrNL6a6ZishcUVCt8lJIkocMCUnzOLWDniiaJjVatJVSHgZGaqTvA87zHa+g8cUyUiQS3yYhXYFPmKokFiS6U/atK3bw34e0d+HGusGrIPW/OFwuIHT9IfQjpWa3/eHsb307ec+KYkrqTbeWr+Lfm77hrrDccPcLlSEIFU0T5Q9fUWtY7Etx2CJjtOoJQqERrLo2yGjRQqf/2GfkeYcPcPNWbbfFlXhqEuAXcLqcjPt5ZUiaxb6CQ9n7sDhCQxAear2HaadH6uoJu6ZHm83D6jDQmCO3KfRRAl9Razhshf5js+M7KoWMvlFkbAIytlmqvvDW1V+HJVsqDuGwttQuW2Gnx/ufR23EoxMnOVY80kD3x94OSStotY8xa5ZT3j3s9wsYMSkyyLzdFRp9auSWldg7NwmPKgoN1L+8otaoFHfWsjX8Z9cMf3qkvK1MiM0VgdGtv3GqND0ySH31CBXSZalzfbGMQzlUWIi1e2QYqtB9xlX/HoN7oW5eqeMoqadWroP4XEgL6P3C+/Q+8XbfuTfdIyXG1NTI9p2hM/y+D0+jT/+bqxyXonGiZviK2kPgl4DTM6t2yuUxRNt5Fdts2eNbSI3Lpj5CpSMZsXsljhaR8yJ7qXbc1mCXyAZRtcBP7bueo79H2jA4bHNpn9pZs07y4MEkDx4ckmYgXFfv3YRVcGRnSHrKSSeSohykNVnUDF9Ra/jFpxAMmvleZHo4VSxMBuOwfoTwfKZRsvoLpUbnokA3YdX7Xv8cfY6PDG35YzRLHx+x2McM1dmYXGxy8Jf7H9XI0b56Hk/oy6Us7WOE+wsumhAZ9ETRdFECX3FMMCQn6+ZVqiXCzRjLUvXVM90MG8josS4yQ0Pem5wlUU0o7SnFvoFEetFMP2cMWTf+WbduNBwG7a+AYPosWYzJ8S0GV6gfeiRYUjSuWYTbY+H7f+gPH3ZgNa26rWLURROqM2RFI0cJfEUtojeXDxW+UnwLwN6i0BCUIUYunlCBNiBjLMcvzYjSZ6Bvo2szR9M+1h2l0+odj8OSE5JucOsHV9++Jlc3z09F4HeWp87VLebp+QuGzqFBS1wRj2alrj78xaUdHrLvuPsYsCobo8VS9TgVTQYl8BXHnjDVzU7DBg40n8XkK+8IK6g/K+/86EP0/vzTyKaDZrrBvYz/fLFmOx7DAtyG/ZSkz+HxFW+FSM4D2frxclM0FkjDe7W4Akqdk/at0m3rtE8KGLEq9JpIj7aJariuPmBmH3qtsi6dRM9P9F9yiqaJEviK2sPvMSG6Xv0a+nD5Z8sZdNIInRIy9j1MOh8VPVZpu/7tmfkDfzr/Xkb9sYTPRl3jT7eVbeXUzRt1u4nFNYHdFXi8el+gFSrCS79VK+n7Reh6hF7z0qP9EpQG5WdQUTXKSkdRe8S4kem4V17CVVCQkNip5dJJCuA0h3rgNmVGBGMDoFfhybQafgq2I8+SNno0K/4e2Kt64oszNOtEI7/Nb/5ju6cUfObyLS+P0bGcD70FX0mo/b2QEinArTwoKGJAzfAVtYj2NDX8NSAsFsyttTxwi7C/VdOjdQfyrG+y8ojWpqhIOr/2KkIImo0bh8FmC8lL6t075n4BzBWL6Za/zX/udse/c9hZXqKZLsJeBZVhFGu6q1fRNFAzfEUtoj3Dj1k7E4eWYuJ1t/LHmOG4TzmH5YkLXRudoHGOvu5x//GR/+VBn/iaFGEC3G/JFHH1vALfaEpk/FxFY0VNCxS1h+/uipTbsUlyafAJM9eumH0Xm1u2pPvchfR/4Xnicl4Wlyo80E+z0wLrEEvydmoVjokSj3aAcsI2cxld3sXg4jKd8gpFEErgK2qPysXaOH2vF3iKKU/9iJwWv1SrnrVrVwwa5ogmZ3Fc46gLXEe1x+oOu5Rv7ZzFPqZy2kljjsGoFA0dJfAVdUBsLwBpdzP84DLGVOGVshL/jlkdClp+SVkUe/iaE/p5EB5GsDps3R/qC9/iyAfA7Qq9dlOzBnDZL79w7viJcfelaDooHb6i3mJzSXqOuo+0s0ey4YmnqywveuvZzXsF8ZjVy3FoBbOtJWoSRvCPMNcNea2WkV5spfDQtpD0wdPfw7FjO8YU7ehiCkUwSuArag3pc3gW7vcsVjW5S0Lzq6+Kub8R80sgiuuYPq/Mxr51S8zt6SI/I9ifvH+zV9iHS03CCP669I+Q81HrfqTkZAOXP/JVSLoxNYWkgQPj7kfRtFACX1FraO95DWCx749avziKG2Qt+q5aGTU/6bj+JB3Xv1ptatG264+a6Ync+tSiVauQ8+NemcWR2XNo0To7gb0omhpK4CvqjKpcGLvq1NJQf2z9fmpX7TrVJfzrIKlfP5KeeFyntEIRG2rRVlGHRBeQsjTvGI2jevScX9MgK/o4bB9hqmLxWaGIFzXDV9Q68c579+63J3QcsRCPP/1ogc8t9iUUZ+YTawzZzp6NHB4Y/2KvQhENNcNX1Bp+M/zwaEwx1l8bZKkS//InJFa7Xj0cQ9bRxaHht1+HwW3Gc8r0Q7U4IkVTpkYCXwjRXAjxjRBim++vtocqb1mjEGKDECI2JyeKRkAVgrYK3wlT75mawLHUDWe9tpPju14Rc/nO9/8ffdfH/oJQKKpDTWf49wHfSSl7AN/5zvW4HdgaJV+hCGHcny7VyamvroAjx9Xnt610uvuOYz8UhUKDmgr8C4FKH7IzgPFahYQQ7YGxwLQa9qdoVEQX3EajUSenZgqehFO50SDGQOsKRV1RU4GfLaXcD+D720qn3EvA/xEthJEPIcRkIcRaIcTa/Pz8Gg5PUZfIKt0bNw4BuTc9D4t9KbnpB+p6KApFVKoU+EKIb4UQv2r8d2EsHQghzgcOSiljUkxKKd+UUg6VUg7NysqKpYqi3pJAgS51T+qcvuUVpA5fQv8yR10PRaGISpVmmVLKs/XyhBB5Qog2Usr9Qog2wEGNYqcC44QQ5wE2IF0I8b6UMvY984rGhX+xNl7BXb9UOhP+/hQ7x55P1y+m1/VQFIqo1FSl8ylwre/4WuCT8AJSyvullO2llJ2By4DFStg3dRqXNbC1Sxf6bNmMtUuXmOsYndoRrRSK2qSmT97TwCghxDZglO8cIURbIcTCmg5O0TgJzM/jneHXpkqncnS1qzbamzSPvKT3a7UPhSKcGu20lVIeBkZqpO8DztNIXwIsqUmfioZIqAomntCF8W3dioeaqpti49LVPyH1jJAUilpCuVZQHHOOnQa+Jm4Salfg95j9JdKhFnkVxxYl8BV1QE1n0fXLSiceqqPvVygSReNaPVM0COKb4R+b7wK1d0rRmFECX3EMCBPWMuIgAqs9ejCT2kdJfkXjQwl8Ra0RxWswED0ASsWgNQkejUKhUAJfUS856/VtVReqihpN0tUMX9H4UAJfUQd4p/7RRGqf35RjVYUi0SiBr6gDvKJexGOQD5Q2+zqRgwnj2JhlKhR1gTLLVBwDwpX5Qjs5Bqzlq8gybKhmrdiFd1WB1RWKhoya4StqDx0bxwP2Q9jKNnE4e2NczZ4y4PoaDCo6AZfOVXryVigaHGqGrzgGhE7lT+rRn30sp+Nv++Nqrf3Nk2vUfzR2OQ7Qx7Gc/DbxjU2hqM8oga+oPaT2bHnctbey7dThZD39TDUai3/jlayGmubU9t052nYZ3ZfXLxfMCkUiUAJfUWsY/HI21GeMqUWLY2SFo78Aa0+eg8lpAs4KSR93851sP+10OsycWfvDUyiOMUrgK2qNXPdBethXkNc6t+aNSao9yRdSf/PX0MOrcbSKXMIyt2qlTEIVjRYl8BW1xgltulHSZik9V9StbYDQEPq9h99CxY6dx34wCkUdogS+ota40Kce6fjfD+p0HFo6/Owb/1wHI1Eo6hYl8BW1Ru2oR+Kxk1e29QoFKDt8RWOmKu9tCkUTQwl8hSJGrHZlm69o2CiVjqLRIqhU5iRGpbPeNYtkrISbcioUDQUl8BUNhKo9bOrVSRS3btmOVE+MogGjbl9FA6PuFm17fr4YT3l5QtpSKOqCGunwhRDNhRDfCCG2+f5m6pTLEEJ8JIT4TQixVQhxck36VSjqAnPbtli7davrYSgUcVPTRdv7gO+klD2A73znWrwMfCWl7A0MBNRWRkWtY08q8/09UscjUSjqBzUV+BcCM3zHM4Dx4QWEEOnAacDbAFJKh5SysIb9KpoYOp6Wo7Kt9AdKms3hqe9nVF1YoWgC1FTgZ0sp9wP4/rbSKNMVyAfeFUJsEEJME0Kk6DUohJgshFgrhFibn59fw+EpGhtabhL0uP3UOzgrZxlfX6P34alQNC2qXLQVQnwLtNbIerAafRwP/FVK+ZMQ4mW8qp+HtQpLKd8E3gQYOnSo2iKpiJue115NYXISGRdfVNdDUSjqBVUKfCnl2Xp5Qog8IUQbKeV+IUQb4KBGsVwgV0r5k+/8I/R1/QpFwhBGI5mXXVrXw1Ao6g01Vel8ClzrO74W+CS8gJTyALBHCNHLlzQS2FLDfhWNlLK0uZSnzK3rYSgUjZKa2uE/DcwRQtwA7AYmAggh2gLTpJTn+cr9FfhACGEBdgJ/qmG/ikbKiF0r8dj086sTvUqhUIRSI4EvpTyMd8Yenr4POC/ofCMwtCZ9KZoGfa9/FndxcV0PQ6FolKidtop6Rfo559T1EBSKRosS+IoGj61sM1Kk1vUwFIp6jxL4igbPzhZrkEKgloYUiugoga9oEDgtTkwucJmORuRduWh1oh1jKhSNEhUARdEg+Ne3M3Fa5rEk/+uIvF4//ETP5avqYFQKRcNCzfAVDYJPb3qSit3TGNjxtIg8Y7NmdTAihaLhoQS+okEw7NabOfhyBS3/cktdD0WhaLAoga9oEAiLhex7763rYSgUDRqlw1coFIomghL4CoVC0URQAl+hUCiaCErgKxQKRRNBCXyFQqFoIiiBr1AoFE0EJfAVCoWiiaAEvkKhUDQRhJT1N4KQECIf2BVn9ZbAoQQOpzGirlHVqGtUNeoaVc2xvEadpJRZWhn1WuDXBCHEWimlirIVBXWNqkZdo6pR16hq6ss1UiodhUKhaCIoga9QKBRNhMYs8N+s6wE0ANQ1qhp1japGXaOqqRfXqNHq8BUKhUIRSmOe4SsUCoUiCCXwFQqFoonQ6AS+EOIcIcTvQojtQoj76no8xxIhxDtCiINCiF+D0poLIb4RQmzz/c0Myrvfd51+F0KMCUofIoT4xZf3ihCi0YQIF0J0EEJ8L4TYKoTYLIS43ZeurpMPIYRNCLFaCPGz7xo97ktX1ygIIYRRCLFBCPG577z+Xx8pZaP5DzACO4CugAX4Gehb1+M6hr//NOB44NegtGeB+3zH9wHP+I77+q6PFejiu25GX95q4GRAAF8C59b1b0vgNWoDHO87TgP+8F0LdZ0C10gAqb5jM/ATcJK6RhHX6S7gv8DnvvN6f30a2wz/BGC7lHKnlNIBfAhcWMdjOmZIKZcBBWHJFwIzfMczgPFB6R9KKSuklP8DtgMnCCHaAOlSylXSe0fODKrT4JFS7pdSrvcdFwNbgXao6+RHeinxnZp9/0nUNfIjhGgPjAWmBSXX++vT2AR+O2BP0HmuL60pky2l3A9eYQe08qXrXat2vuPw9EaHEKIzMBjvDFZdpyB86oqNwEHgGymlukahvAT8H+AJSqv316exCXwt/ZeyO9VG71o1iWsohEgF5gF3SCmPRiuqkdbor5OU0i2lHAS0xzsb7R+leJO6RkKI84GDUsp1sVbRSKuT69PYBH4u0CHovD2wr47GUl/I83064vt70Jeud61yfcfh6Y0GIYQZr7D/QEo535esrpMGUspCYAlwDuoaVXIqME4IkYNXbXyWEOJ9GsD1aWwCfw3QQwjRRQhhAS4DPq3jMdU1nwLX+o6vBT4JSr9MCGEVQnQBegCrfZ+ixUKIk3wWA9cE1Wnw+H7T28BWKeWLQVnqOvkQQmQJITJ8x0nA2cBvqGsEgJTyfilleyllZ7wyZrGU8ioawvWp65XuRP8HnIfX8mIH8GBdj+cY//ZZwH7AiXf2cAPQAvgO2Ob72zyo/IO+6/Q7QdYBwFDgV1/ef/DtyG4M/wHD8X42bwI2+v47T12nkGs0ANjgu0a/Ao/40tU1irxWZxCw0qn310e5VlAoFIomQmNT6SgUCoVCByXwFQqFoomgBL5CoVA0EZTAVygUiiaCEvgKhULRRFACX6FQKJoISuArFApFE+H/AbPvAw9sHL6uAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.io import loadmat\n",
    "from scipy.fft import dct,idct\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "m=loadmat(\"strong.mat\")\n",
    "y=m['him']\n",
    "y=y.reshape(-1,1)\n",
    "Y=dct(y,norm='ortho')\n",
    "\n",
    "Y=Y.reshape(len(Y))\n",
    "YA=abs(Y)\n",
    "YY=sorted(YA,reverse=True)\n",
    "ind=sorted(range(len(Y)), key=lambda k: YA[k])\n",
    "need=1\n",
    "while np.linalg.norm(Y[ind[1:need+1]])/np.linalg.norm(Y)<0.999:\n",
    "  need = need+1\n",
    "ypc=need/len(Y)*100\n",
    "Y[ind[need+1:]]=0\n",
    "yy=idct(Y)\n",
    "plt.plot(y)\n",
    "plt.plot(yy)\n",
    "plt.plot(y-yy)\n",
    "plt.legend([\"Original\",\"57% of coeffs\",\"Differences\"])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在这两种情况下，大约一半的DCT系数足以合理地重建语音信号。如果所需能量分数为99%，所需系数的数目将减少到总能量的20%左右。重建的结果是低劣的，但仍然是可理解的。\n",
    "对这些和其他样本的分析表明，需要更多的系数来表征男人的声音，而不是女人的声音。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
